package com.company;

import java.sql.*;

public class DBConnection {
    String driver="com.mysql.cj.jdbc.Driver";
  //    URL格式,最后为数据库名
             String url="jdbc:mysql://localhost:3306/java?useUnicode=true&characterEncoding=UTF8";//JavaTest为你的数据库名称
                String user="root";
      String password="wza991230";
      Connection  coon=null;
      public DBConnection(){
               try{
            //            加载驱动程序
                       Class.forName(driver);
                       coon=(Connection)DriverManager.getConnection(url,user,password);
                       if(!coon.isClosed()){
                               System.out.println("成功连接数据库！");
                           System.out.println("-------------------------");
                           }
                  }catch (Exception e){
                           e.printStackTrace();
                       }
      }
      public void close(){
               try{
                        this.coon.close();
               }
               catch(Exception e){
                       e.printStackTrace();
               }
      }
 //    增加数据
             public void add(String Student_id,String Sname,int Sage,String Ssex,String Dept_id,String Sclass){
                String sql="insert into student(Student_id,Sname,Sage,Ssex,Dept_id,Sclass) values(?,?,?,?,?,?)";//向表中插入数据
                try{
                        PreparedStatement preStmt=(PreparedStatement)this.coon.prepareStatement(sql);
                        preStmt.setString(1, Student_id);
                        preStmt.setString(2,Sname );
                        preStmt.setInt(3, Sage);//和上面的注释的一块组成另外一种插入方法
                    preStmt.setString(4,Ssex );
                    preStmt.setString(5,Dept_id );
                    preStmt.setString(6,Sclass );
                        preStmt.executeUpdate();
                       System.out.println("插入数据成功！");
                    System.out.println("-------------------------");
                        preStmt.close();
                   }catch(Exception e){
                        e.printStackTrace();
                    }
           }

          //    查询
              public void select(){
                String sql="select * from student";//查询student表中的信息

                 try{
                         Statement stmt=(Statement)this.coon.createStatement();
                         ResultSet rs=(ResultSet)stmt.executeQuery(sql);//得到的是结果的集合
                         System.out.println("--------------------------------------------");
                         System.out.println("     学号   "+"\t"+"     姓名"+"\t"+"年龄"+"\t"+"性别"+"\t"+"系号"+"\t"+" 班号");
                         System.out.println("--------------------------------------------");
                         while(rs.next()){
                             String sid =rs.getString("Student_id");
                             String name =rs.getString("Sname");
                             int age =rs.getInt("Sage");
                             String sex =rs.getString("Ssex");
                             String did =rs.getString("Dept_id");
                             String sclass = rs.getString("Sclass");
                             System.out.println(sid+"\t"+name+"\t"+age+"\t"+sex+"\t"+did+"\t"+sclass);
                             }
                         stmt.close();
                     }catch(Exception e){
                         e.printStackTrace();
                     }
             }

          //    更改数据
          public void update(String student_id,String Sname,int Sage,String Ssex,String Dept_id,String Sclass){
              String sql="update student set Sname=?,Sage=?,Ssex=?,Dept_id=?,Sclass=? where student_id=?";//推荐使用这种方式，下面的那种注释方式不知道为啥有时候不好使
              try{
                  PreparedStatement prestmt=(PreparedStatement)this.coon.prepareStatement(sql);
                  prestmt.setString(1,Sname);
                  prestmt.setInt(2,Sage);
                  prestmt.setString(3,Ssex);
                  prestmt.setString(4,Dept_id);
                  prestmt.setString(5,Sclass);
                  prestmt.setString(6,student_id);
                  prestmt.executeUpdate();
                  System.out.println("更改数据成功！");
                  System.out.println("-------------------------");
                  prestmt.close();
              }catch(Exception e){
                  e.printStackTrace();
              }
          }


              public void update1(String student_id,String Sname){
                String sql="update student set Sname=? where Student_id=?";//推荐使用这种方式，下面的那种注释方式不知道为啥有时候不好使
                 try{
                         PreparedStatement prestmt=(PreparedStatement)this.coon.prepareStatement(sql);
                         prestmt.setString(1,Sname);
                         prestmt.setString(2,student_id);
                         prestmt.executeUpdate();
                         System.out.println("更改数据成功！");
                     System.out.println("-------------------------");
                         prestmt.close();
                     }catch(Exception e){
                         e.printStackTrace();
                     }
             }
                public void update2(String student_id,int Sage){
                    String sql="update student set Sage=? where Student_id=?";//推荐使用这种方式，下面的那种注释方式不知道为啥有时候不好使
                    try{
                        PreparedStatement prestmt=(PreparedStatement)this.coon.prepareStatement(sql);
                        prestmt.setInt(1,Sage);
                        prestmt.setString(2,student_id);
                        prestmt.executeUpdate();
                        System.out.println("更改数据成功！");
                        System.out.println("-------------------------");
                        prestmt.close();
                    }catch(Exception e){
                        e.printStackTrace();
                    }
                }
                public void update3(String student_id,String Ssex){
                    String sql="update student set Ssex=? where Student_id=?";//推荐使用这种方式，下面的那种注释方式不知道为啥有时候不好使
                    try{
                        PreparedStatement prestmt=(PreparedStatement)this.coon.prepareStatement(sql);
                        prestmt.setString(1,Ssex);
                        prestmt.setString(2,student_id);
                        prestmt.executeUpdate();
                        System.out.println("更改数据成功！");
                        System.out.println("-------------------------");
                        prestmt.close();
                    }catch(Exception e){
                        e.printStackTrace();
                    }
                }
                public void update4(String student_id,String Dept_id){
                    String sql="update student set Dept_id=? where Student_id=?";//推荐使用这种方式，下面的那种注释方式不知道为啥有时候不好使
                    try{
                        PreparedStatement prestmt=(PreparedStatement)this.coon.prepareStatement(sql);
                        prestmt.setString(1,Dept_id);
                        prestmt.setString(2,student_id);
                        prestmt.executeUpdate();
                        System.out.println("更改数据成功！");
                        System.out.println("-------------------------");
                        prestmt.close();
                    }catch(Exception e){
                        e.printStackTrace();
                    }
                }
                public void update5(String student_id,String Sclass){
                    String sql="update student set Sclass=? where student_id=?";//推荐使用这种方式，下面的那种注释方式不知道为啥有时候不好使
                    try{
                        PreparedStatement prestmt=(PreparedStatement)this.coon.prepareStatement(sql);
                        prestmt.setString(1,Sclass);
                        prestmt.setString(2,student_id);
                        prestmt.executeUpdate();
                        System.out.println("更改数据成功！");
                        System.out.println("-------------------------");
                        prestmt.close();
                    }catch(Exception e){
                        e.printStackTrace();
                    }
                }

          //    删除数据
              public void del(String Student_id){
                 String sql="delete from student where Student_id=?";
                 try{
                         PreparedStatement prestmt=(PreparedStatement)this.coon.prepareStatement(sql);
                         prestmt.setString(1, Student_id);
                         prestmt.executeUpdate();
                         System.out.println("删除数据成功！");
                         System.out.println("-------------------------");
                         prestmt.close();
                     }catch(Exception e){
                         e.printStackTrace();
                     }
             }
 }




